package com.yujiahao.bigdata.wordcount

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

object Spark01_WordCount {
  def main(args: Array[String]): Unit = {
    //TODO 1、获得连接
    val conf: SparkConf = new SparkConf().setAppName("WordCount").setMaster("local")
    val sc: SparkContext = new SparkContext(conf)

    //TODO 3、 业务逻辑
    //1)读取文件，获取原始数据。
    val line: RDD[String] = sc.textFile("data/word.txt")
    // 2）将原始数据分解成一个一个的单词。
    val words: RDD[String] = line.flatMap(line => line.split(" "))
    // 3）将数据按照单词进行分组。
    val wordGroup: RDD[(String, Iterable[String])] = words.groupBy(word => word)
    // 4）对分组后的数据进行统计。
    val wordCount: RDD[(String, Int)] = wordGroup.mapValues(list => list.size)
    // 5）将结果采集后打印到控制台上
    wordCount.collect().foreach(println)

    //TODO 2、关闭连接
    sc.stop()

  }

}
